#ifndef LIST_H
#define LIST_H

struct ListItem
{
    ListItem* previous;
    ListItem* next;
};
class List
{
public:
    ListItem head;

    List();//初始化
    void initialize();
    int size();//返回元素个数
    bool empty();
    ListItem* back();//返回最后一个元素指针
    void push_back(ListItem* item);
    void pop_back();
    ListItem* front();//返回第一个元素指针
    void push_front(ListItem* item);
    void pop_front();
    void insert(int pos,ListItem* item);//插入到pos
    void erase(int pos);//删除pos
    void erase(ListItem* item);
    ListItem* at(int pos);//返回pos序号指针
    int find(ListItem* item);//返回指针位置
    void append_list(List add);//添加链表到后面
};

#endif